import { getRole } from "@/api/auth";


// 这个函数检查用户是否有所需的角色权限
const hasPermission = (permissionNeeded) => {
    // 获取用户角色
    const userRole = getRole()
    console.log('权限检查 - 需要的权限:', permissionNeeded);
    console.log('权限检查 - 当前用户角色:', userRole);
    
    // 如果传入的是数组，检查用户是否具有数组中的任一角色
    if (Array.isArray(permissionNeeded)) {
      const result = permissionNeeded.includes(userRole);
      console.log('权限检查结果 (数组):', result);
      return result;
    }
    
    // 如果传入的是字符串，直接比较
    const result = permissionNeeded === userRole;
    console.log('权限检查结果 (字符串):', result);
    return result;
  }

  export default {
    mounted(el, binding) {
      const { value, modifiers } = binding
      console.log('权限指令挂载 - 绑定值:', value);
      console.log('权限指令挂载 - 修饰符:', modifiers);
      
      // 检查是否有权限
      let permission = hasPermission(value)
      
      // 处理修饰符
      if (modifiers.not) {
        permission = !permission
        console.log('权限取反后的结果:', permission);
      }
      
      // 根据不同修饰符决定如何处理权限的情况
      if (permission) {
        console.log('执行限制操作');
        if (modifiers.disable) {
          console.log('应用禁用修饰符');
          el.disabled = true
          el.classList.add('permission-disabled')
        } else if (modifiers.hide) {
          console.log('应用隐藏修饰符');
          el.style.display = 'none'
        } else {
          console.log('执行默认行为：移除元素');
          el.parentNode && el.parentNode.removeChild(el)
        }
      } else {
        // 确保元素可见
        if (modifiers.hide) {
          el.style.display = ''
        } else if (modifiers.disable) {
          el.disabled = false
          el.classList.remove('permission-disabled')
        }
      }
    },
    
    updated(el, binding) {
      if (binding.value !== binding.oldValue) {
        console.log('权限指令更新 - 新值:', binding.value);
        console.log('权限指令更新 - 旧值:', binding.oldValue);
        this.mounted(el, binding)
      }
    }
  }